其他
实验 | 使用本地大模型DIY制作单词书教案PDF
一、任务描述
假设你是英语老师,你希望在单词书中增加历史文化方面的信息, 市面上的单词书并不能很好的满足你的需要。针对这一需求, 我们可以利用大模型,定制你的单词书教案。例如单词 abandon
二、准备工作
2.1 安装ollama
点击前往网站 https://ollama.com/ ,下载ollama软件,支持win、Mac、linux
2.2 下载LLM
ollama软件目前支持多种大模型, 如阿里的(qwen、qwen2)、meta的(llama3),
以llama3为例,根据自己电脑显存性能, 选择适宜的版本。如果不知道选什么,那就试着安装,不合适不能用再删除即可。
打开电脑命令行cmd(mac是terminal), 网络是连网状态,执行模型下载(安装)命令
ollama pull llama3
等待 llama3:8b 下载完成。
2.3 安装python包
在python中调用ollama服务,需要ollama包。
打开电脑命令行cmd(mac是terminal), 网络是连网状态,执行安装命令
pip3 install ollama
2.4 启动ollama服务
在Python中调用本地ollama服务,需要先启动本地ollama服务, 打开电脑命令行cmd(mac是terminal), 执行
ollama serve
Run
2024/06/14 14:52:24 routes.go:1011: INFO server config env="map[OLLAMA_DEBUG:false OLLAMA_FLASH_ATTENTION:false OLLAMA_HOST:http://127.0.0.1:11434 OLLAMA_KEEP_ALIVE: OLLAMA_LLM_LIBRARY: OLLAMA_MAX_LOADED_MODELS:1 OLLAMA_MAX_QUEUE:512 OLLAMA_MAX_VRAM:0 OLLAMA_MODELS:/Users/deng/.ollama/models OLLAMA_NOHISTORY:false OLLAMA_NOPRUNE:false OLLAMA_NUM_PARALLEL:1 OLLAMA_ORIGINS:[http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:* app://* file://* tauri://*] OLLAMA_RUNNERS_DIR: OLLAMA_TMPDIR:]"
time=2024-06-14T14:52:24.742+08:00 level=INFO source=images.go:725 msg="total blobs: 18"
time=2024-06-14T14:52:24.742+08:00 level=INFO source=images.go:732 msg="total unused blobs removed: 0"
time=2024-06-14T14:52:24.743+08:00 level=INFO source=routes.go:1057 msg="Listening on 127.0.0.1:11434 (version 0.1.44)"
time=2024-06-14T14:52:24.744+08:00 level=INFO source=payload.go:30 msg="extracting embedded files" dir=/var/folders/y0/4gqxky0s2t94x1c1qhlwr6100000gn/T/ollama4239159529/runners
time=2024-06-14T14:52:24.772+08:00 level=INFO source=payload.go:44 msg="Dynamic LLM libraries [metal]"
time=2024-06-14T14:52:24.796+08:00 level=INFO source=types.go:71 msg="inference compute" id=0 library=metal compute="" driver=0.0 name="" total="72.0 GiB" available="72.0 GiB"
cmd(mac是terminal)看到如上的信息,说明本地ollama服务已开启。
三、实验
3.1 读取词表
假设你需要背words.csv中的单词,
import pandas as pd
df = pd.read_csv('words.csv')
df
3.2 小实验
以单词march为例
import ollama
def diy_dictionary(word):
response = ollama.chat(model='llama3:8b', messages=[
{
'role': 'user',
'content': f"""
你是一名中英文双语教育专家,拥有帮助将中文视为母语的用户理解和记忆英语单词的专长,请根据用户提供的英语单词{word}完成任务。
# {word}
[美式音标]
## 语义
- 系统地分析用户提供的单词,并以简单易懂的方式解答;
## 例句
- 为该单词提供至少 3 个不同场景下的使用方法和例句。并且附上中文翻译,以帮助用户更深入地理解单词意义。其中英文例句加粗斜体!
## 历史文化
- 详细介绍单词的造词来源和发展历史,以及在欧美文化中的内涵
## 相关单词
- 列出单词对应的名词、单复数、动词、不同时态、形容词、副词等的变形以及对应的中文翻译。
## 词组搭配
- 列出单词对应的固定搭配、组词以及对应的中文翻译。
注意: 如非特别说明尽量用中文,结果返回markdown格式; 均为二级标题##, 无序列表用-而不是*。
请根据单词{word}制作内容
""",
},
])
result = response['message']['content']
return result
print(diy_dictionary(word = 'march'))
Run
# March
[美式音标] /mɑːrtʃ/
## 语义
march 是一種动詞,主要表达走路、行军或進行某种活动的意思。在日常生活中,march 可以用来描述人们的步伐、进军或进行一些形式上的活动。
## 例句
- **_I'll march to the store to pick up some milk._** 我将去超market购买牛奶。
- _The soldiers marched across the border._ 军队跨越边境行进。
- _March is one of my favorite months because of the spring weather._ 三月是我最喜欢的月份,因为春天气候很好。
## 历史文化
march 的词源来自Old French "_marcher_",表示「walk」或「go」。在中世纪,march 表示军队进军或进行某种活动。在英语语境中,march 通常与spring、summer、autumn、winter 等四季相关联。
## 相关单词
- 名词:March (一月份的名称)、march (行军、步伐)
+ Plural:marches
- 单复数:
+ March (动詞):march, marched
+ March (名詞):march, marches
- 动词:
+ Present tense:march
+ Past tense:marched
+ Past participle:marched
- 不同时态:
+ Future tense:will march
+ Conditional tense:would march
- 形容词:marching (进行某种活动的)
- 副词:on foot (徒步)、by foot (徒步)
## 词组搭配
- **_take a march_**:徒步旅行
- **_go on a march_**:进行军事演习或行军
- **_in step with the march_**:与某种活动保持同步
3.3 批量生成
%%time
import csv
import ollama
import pandas as pd
def diy_dictionary(word):
response = ollama.chat(model='llama3:8b', messages=[
{
'role': 'user',
'content': f"""
你是一名中英文双语教育专家,拥有帮助将中文视为母语的用户理解和记忆英语单词的专长,请根据用户提供的英语单词{word}完成任务。
# {word}
[美式音标]
## 语义
- 系统地分析用户提供的单词,并以简单易懂的方式解答;
## 例句
- 为该单词提供至少 3 个不同场景下的使用方法和例句。并且附上中文翻译,以帮助用户更深入地理解单词意义。其中英文例句加粗斜体!
## 历史文化
- 详细介绍单词的造词来源和发展历史,以及在欧美文化中的内涵
## 相关单词
- 列出单词对应的名词、单复数、动词、不同时态、形容词、副词等的变形以及对应的中文翻译。
## 词组搭配
- 列出单词对应的固定搭配、组词以及对应的中文翻译。
注意: 如非特别说明尽量用中文,结果返回markdown格式; 均为二级标题##, 无序列表用-而不是*。
请根据单词{word}制作内容
"""}
])
result = response['message']['content']
return result
#读取词表
df = pd.read_csv('words.csv')
df['Dictionary'] = df['Word'].apply(diy_dictionary)
#保存成csv和md
df.to_csv('word-dictionary.csv', index=False)
with open('Your-Diy-Dictionary.md', 'w', encoding='utf-8') as mdf:
mdf.write('<br><br>\n'.join(df['Dictionary']))
df
四、生成单词书
4.1 选择主题
打开 Typora(一种markdown软件), 选择一种自己喜欢的 主题Theme ,
4.2 导出pdf
依次文件-->导出-->PDF或HTML
五、讨论
在本文中,我们展示了利用ollama制作单词书教案,实际上各位可以结合自身学习工作需要, 开发更多的应用场景。如果这份利用 ollama 自制教案对你有帮助,欢迎转发分享给你的朋友。